A software component (application, program, etc.) of a computing device/system will generally request other hardware/software components to perform operations/tasks on its behalf. To accomplish this, the requesting software component uses a set of standardized requests, collectively called an Application Programming Interface (API).
In general, an API is a mechanism that allows software components to communicate with one another. APIs may include specifications for routines, data structures, object classes, variables, etc., and may be defined in accordance with an international standard such as Portable Operating System Interface (POSIX) or may be specifically defined by a vendor. The term API may refer to a complete interface, a single function, a group of functions, etc.
Due to the widespread use of APIs, software development kits (SDKs) have been proposed and widely used. SDKs are, in essence, a set of software development tools that enables a programmer to create software for a specific platform (e.g., a software package, software framework, hardware platform, computer system, video game console, operating system, or similar platform). Typically, an SDK includes predefined APIs, programming tools, and supporting documentation.